<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        body, html{
            padding: 0;
            margin: 0;
            height: 100%;
        }

        #frame{
            display: flex;
            height: 100%;
        }
        #doc, #docEdit{
            flex: 1;
            height: 100%;
            overflow: auto;
            padding: 0 5px;
            border: 0;
        }
    </style>
</head>
<body>
    <div id="frame">
        <div id="doc"></div>
        <textarea id="docEdit">
<doc>
    <h1>my-doc-jsx——一个基于jsx的文档书写、文档转换工具</h1>
    <blockquote>my-doc-jsx——一个基于jsx的文档书写、文档转换工具</blockquote>
    <h2>富文本、office写文档的时代过去了</h2>
    <table>
        <tr>
            <th>1</th>
            <th>2</th>
            <th>3</th>
        </tr>
        <tr>
            <td>4</td>
            <td>5</td>
            <td>6</td>
        </tr>
        <tr>
            <td>7</td>
            <td>8</td>
            <td><span>9</span></td>
        </tr>
    </table>
    <p>
        {`早期大家写博客都是用富文本编辑器，后来大家用了markdown；早期大家写文档都是用word，后来大家用了gitbook。这是因为我们的博客也好，文档也好，大家都希望用一门标记语言来书写`}
    </p>
    <p>
        {`用标记语言书写文档的好处很多。比如使我们的文档（博客）的内容能够和样式分离，能够配上不同的css后可以以展示不同形式展示。再比如可以让计算机读懂我们文档的结构，这样我们可以让计算机帮把文档转换成任意的格式。再比如我们可以扩展标记语言，使用我们自定义的方言去书写一些格式非常复杂的内容。再比如。。。。。。`}
    </p>
    <p>
        {`因此，在这个时代已经没有人在希望用富文本或者office去写文档，我们要标记语言。`}
    </p>
    <h2>markdown、xml？还是其他标记语言</h2>
    <p>那么用什么形式来作为这个标记语言呢？</p>
    <p>
    <strong>xml</strong>
    {`无疑是最优秀的标记语言，xml具有较高的可扩展性，定义规范。但是xml不适合书写文档，因为他过于`}<strong>规范</strong>{`，不够灵活，严格的语法要求使人生畏；而且他对于转义的处理过也不够方便，一个空格都需要六个字符表示（xml转义），而且也没几个人能够记住这些转义；同时离开编辑器我们也很难直接使用xml去书写复杂的格式文档。`}
    </p>
    <p>
        <strong>markdown</strong>
        {`无疑是最流行的用于文档书写的标记语言，它非常的简单，而且就是为了书写文档而生的。
但是它不同于xml，扩展性不够，我们可以通过“\`\`\`”扩展markdown的语法，但是书写起来非常不方便。
同时markdown方言太多，导致多种markdown编辑器编辑出的文档彼此居然不兼容。
再有markdown的语法过于简单，因此用起来反而非常麻烦，相信很多让人都遇到过一个表格调整了半天显示还有问题的情况。
这些问题都是因为markdown不具备xml的规范性导致的。`}
    </p>
    <p>
        <strong>html</strong>
        {`本身就没有扩展性，同时有没有markdown方便，更不适合书写文档。
我们希望能够像写markdown一样写文档代码，又希望像写html一样写文档代码。有没有这样的标记语言？
这种感觉就像又想写JavaScript代码，又想写html代码一样。所有我选择了jsx，严格来说jsx不是一个标记语言，他更多的是一个编程语言。但是如果你不使用JavaScript语法部分，它就是一个天然的标记语言了，同时jsx继承了xml的扩展性，配合es6的`}<strong>模板字符串</strong>{`完美地解决了转义问题，而且他易于扩张。
使用jsx，像markdown那样包装html，能够使我们使用可扩展的标记语言书写文档，这就是`}<strong>my-doc-jsx</strong>{`。
`}
    </p>
</doc>
        </textarea>
    </div>
    <script src="./static/react.js"></script>
    <script src="./static/babel.js"></script>
<script>
    function renderDoc() {
        var text = document.querySelector("#docEdit").value;
        myDocJsx.convert(text, {
            format: 'HTML'
        }).then(function(script){
            document.querySelector('#doc').innerHTML = script;
        });
    }

    document.addEventListener("DOMContentLoaded", function () {
        renderDoc()
        document.querySelector("#docEdit").addEventListener("input", function () {
            renderDoc()
        })
    })
</script>
</body>
</html>